/**
 * Copyright 2006 gworks.com.au
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License. (http://www.apache.org/licenses/LICENSE-2.0)
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed 
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for 
 * the specific language governing permissions and limitations under the License.
 *
 * <dhamma-message src="Atisha (11th century Tibetan Buddhist master)">
 * 	The greatest achievement is selflessness. The greatest worth is self-mastery.
 * 	The greatest quality is seeking to serve others. The greatest precept is continual awareness.
 * 	The greatest medicine is the emptiness of everything. The greatest action is not conforming with the worlds ways.
 * 	The greatest magic is transmuting the passions. The greatest generosity is non-attachment.
 * 	The greatest goodness is a peaceful mind. The greatest patience is humility.
 * 	The greatest effort is not concerned with results. The greatest meditation is a mind that lets go.
 * 	The greatest wisdom is seeing through appearances. 
 * </dhamma-message>
 */
package au.com.gworks.jump.app.util;

import java.util.StringTokenizer;

import javax.servlet.http.HttpServletRequest;

import org.javaongems.runtime.io.PathUtils;
import org.javaongems.runtime.lang.StringUtils;


final public class FormatUtils {
	final static private String startPrefix = "<a href=\"";
	final static private String middleLink = "\">";
	final static private String endLink = "</a>";

	private FormatUtils() {
		// nothing to do.
	}

	static public String toPathLinks(HttpServletRequest request, String path) {
		String sysCtx = request.getContextPath();
		String revDocCtx = (String) request.getAttribute(EnvironmentUtils.ENV_REV_DOC_CTX);
		String docCtx = sysCtx + revDocCtx;

		if (path == null)
			return null;
		StringTokenizer st = new StringTokenizer(path, "/");
		StringBuffer result = new StringBuffer();
		StringBuffer folder = new StringBuffer();

		result.append(startPrefix);
		result.append(docCtx).append('/');
		result.append(middleLink);
		result.append('/');
		result.append(endLink);
		int total = st.countTokens();
		for (int i = 0; i < total; i++) {
			String token = st.nextToken();
			folder.append('/');
			folder.append(token);
			if (i > 0)
				result.append('/');
			String thePath = PathUtils.appendSlashIfRequired(folder.toString());
			result.append(startPrefix);
			result.append(docCtx);
			result.append(StringUtils.encodeUrl(thePath));
			result.append(middleLink);
			result.append(token);
			result.append(endLink);
		}
		if (!path.equals("/"))
			result.append("/"); 
		return result.toString();
	}
}
